package ArrayList集合实战应用;

import java.util.ArrayList;
import java.util.List;

/**
 * @Gather:云尚学Java
 *
 */
public class Student {
    String name;
    int score;
    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", score=" + score +
                '}';
    }

    public static void main(String[] args) {
        //创建Student类的5个对象，如下所示：
        Student stu_1 = new Student("刘德华", 85);
        Student stu_2 = new Student("张学友", 100);
        Student stu_3 = new Student("周星驰", 75);
        Student stu_4 = new Student("章子怡", 59);
        Student stu_5 = new Student("周深", 80);

        //将以上5个对象放入ArrayList中，完成如下操作：
        List<Student> stuList = new ArrayList<Student>();//对象数组
        stuList.add(stu_1);
        stuList.add(stu_2);
        stuList.add(stu_3);
        stuList.add(stu_4);
        stuList.add(stu_5);
        //1、输出ArrayList中的对象个数。
        System.out.println("ArrayList的对象数组：" + stuList.size());
        System.out.println("删除前");
        //元素的遍历
        for (Student s : stuList) {
            System.out.println(s);
        }
        //2.删除姓名为"周星驰"的学生信息，并输出ArrayList中现有学生信息。
        for (int i = 0; i < stuList.size(); i++) {
            Student s = stuList.get(i);//stu_1
            //循环遍历的过程中，依次获取每一个元素，然后比较判断，找出姓名
            //为周星驰的同学，删除
            if (s.name.equals("周星驰")) {
                //删除姓名为"周星驰"的学生信息
                stuList.remove(i);
            }
        }
        System.out.println("删除后");
        //元素遍历
        for (Student s : stuList) {
            System.out.println(s);
        }
        //3.将学生姓名为“刘德华”的学生成绩改为95
        for (int i = 0; i < stuList.size(); i++) {
            Student s = stuList.get(i);//stu_1
            //循环遍历的过程中，依次获取每一个元素，然后比较判断，找出姓名
            //为周星驰的同学，删除
            if (s.name.equals("周星驰")) {
                System.out.println("修改之前的成绩为：" + s.score);
                //删除姓名为"周星驰"的学生信息
                s.score = 95;
                System.out.println("修改之后的成绩为：" + s.score);
            }
        }
        //4.输出成绩不及格的学生姓名
        for (int i = 0; i < stuList.size(); i++) {
            Student s = stuList.get(i);//stu_1
            //循环遍历的过程中，依次获取每一个元素，然后比较判断，找出姓名
            //为周星驰的同学，删除
            if (s.score < 60) {
                System.out.println("姓名：" + s.name + "-年龄：" + s.score);
            }
        }
        /**
         *
         * 对于集合而言，存储的只是一个对象的引用而已，并不是实例本身，ArrayList集合也是一样
         * 正是因为这一点 Student s = list.get(i);
         * 根据索引获取所谓的元素s 才能够调用Student类下的方法
         * 以为集合存储的只是一个对象的引用而已
         * 这一点和数组是是一样的。
         */

    }
}
